//
//  AYuHomeViewController.swift
//  SHWeibo3
//
//  Created by 余伟康 on 16/7/19.
//  Copyright © 2016年 wangce. All rights reserved.
//
//  首页

import UIKit

// cell 可重用标识符
private let homeCellId = "homeCellId"
class AYuHomeViewController: AYuVisitorViewController {

    // 全局的模型数组
    lazy var statusListViewModel: AYuStatusListViewModel = AYuStatusListViewModel()
    override func viewDidLoad() {
        super.viewDidLoad()
        if !isLogin {
            visitorView?.setupVisitorViewInfo(nil, title: nil)
            return
        }
        setupTableViewInfo()
        getHomeData()
    }

    // 设置tableView
    func setupTableViewInfo(){
        // 设置数据源代理
        tableView.dataSource = self
        tableView.delegate = self
        // 注册cell
        tableView.registerClass(SHStautsCell.self, forCellReuseIdentifier: homeCellId)
        // 设置tableViewCell高度
        tableView.estimatedRowHeight = 200
        tableView.separatorStyle = .None
        
        // 设置tableView的 footView
        tableView.tableFooterView = indicatirView
        //添加刷新控件
        tableView.addSubview(refreshControl)
        // 添加事件
        refreshControl.addTarget(self, action: "refreshAction", forControlEvents: UIControlEvents.ValueChanged)
        
    }
    
    func refreshAction(){
    getHomeData()
    }

    // 懒加载控件
    // 菊花
    private lazy var indicatirView:UIActivityIndicatorView = {
        let view = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
        view.color = ThemeColor
        return view
    }()
    
    // 下拉刷新
    private lazy var refreshControl: SHRefreshControl = SHRefreshControl()
}

// MARK: - UITableViewDataSource
extension AYuHomeViewController: UITableViewDataSource,UITableViewDelegate{
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statusListViewModel.statusList.count
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(homeCellId, forIndexPath: indexPath) as! SHStautsCell
        
        // 给cell赋值
        cell.statusViewModel = statusListViewModel.statusList[indexPath.row]
        return cell
    }
    
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

        // 最后一个cell 开始更新数据
        if indexPath.row == statusListViewModel.statusList.count - 1 && !indicatirView.isAnimating(){
            // 开始动画
            indicatirView.startAnimating()
            getHomeData()
        }
    }
    
}


extension AYuHomeViewController{
    func getHomeData(){
        statusListViewModel.loadHomeData(indicatirView.isAnimating()) { (isSuc) -> () in
            // 停止动画
            self.endRefreshing()
            if !isSuc{
                print("数据请求失败")
                return
            }
            print("刷新UI")
            self.tableView.reloadData()
            
        }
    }
    // 停止各种动画
    func endRefreshing(){
        self.indicatirView.stopAnimating()
        self.refreshControl.endRefreshing()
    }
}